02. 标签
到目前为止,我们在这门课程中学习的都是具体的 git 命令。我们详细了解了这些命令的工作方式,以及在终端上运行这些命令后的输出结果。
现在我们从宏观层面了解下 git 标签在仓库中的作用。
Nd016 WebND Ud123 Gitcourse BETAMOJITO L5 03 打标签概述
目前所处的位置
你可以在任一项目中执行这些步骤,我将在
new-git-project
项目中执行。
我们来看看该项目到目前为止的 git log 输出结果:
终端显示运行
git log --oneline
后的输出结果。
git tag 命令
注意所显示的结果(只需注意 SHA 和 commit 消息)
我们将使用
git tag
命令与仓库的标签进行交互:
$ git tag -a v1.0
上述命令将打开代码编辑器,并等待你为标签输入信息。输入"Ready for content"怎么样?
代码编辑器正在等待提供标签信息。
注意:在上述命令 (
git tag -a v1.0) 中,使用了-a选项。该选项告诉 git 创建一个带注释的标签。如果你没有提供该选项(即git tag v1.0),那么它将创建一个轻量级标签。
建议使用带注释的标签,因为它们包含了大量的额外信息,例如:
- 标签创建者
- 标签创建日期
- 标签消息
因此,你应该始终使用带注释的标签。
验证标签
保存并退出编辑器后,命令行上什么也不会显示。那么如何知道已经向项目中添加了标签呢?只需输入
git tag
,命令行会显示仓库中的所有标签。
终端显示了
git tag
命令的输出结果,并列出了
v1.0
标签。
我们已经验证了该标签位于仓库中,但是我们想知道它位于仓库的哪个位置。为此,我们需要调用一直在使用的
git log
!
能看到标签吗?
SOLUTION:
否git log 的 --decorate 选项
正如你所了解的,
git log
是一个非常强大的工具,可以让我们查看仓库的 commit。我们已经学习了几个选项,现在该学习一个新的选项了。
--decorate
选项将显示默认视图隐藏起来的一些详情。
马上去试试运行
git log --decorate
吧!
💡 Git 2.13 中
--decorate选项的变化 💡
在 2.13 版 git 中,
log命令已改为自动启用--decorate选项。这意味着,你不需要在命令中包含--decorate选项,因为它已经自动包含了!因此下面的命令输出结果完全一样:
$ git log --decorate $ git log
请参阅 2.13 版本说明 - 英 。
终端显示了
git log --decorate
命令的输出结果。现在的日志输出显示了新建的标签。
标签信息位于第一行的末尾:
commit 6fa5f34790808d9f4dccd0fa8fdbc40760102d6e (HEAD -> master, tag: v1.0)
看见输出结果显示的
tag: v1.0
了吗?这就是标签!标签与 commit 相绑定。因此,该标签与 commit 的 SHA 位于同一行。
HEAD -> master?
你是否注意到,日志中除了显示标签信息之外,
--decorate还显示了HEAD -> master?这是关于分支的信息!接下来我们将了解 git 中的分支。
删除标签
如果将标签消息中的某个字打错了,或标签名称打错了(输入
v0.1
,而不是
v1.0
),如何修正这个错误?最简单的方法是删除这个标签并重新创建。
可以通过输入
-d
选项 (表示 delete 删除!)加上标签名称来删除 git 标签:
$ git tag -d v1.0
终端显示了使用
-d
选项删除某个标签。所运行的命令为
git tag -d v1.0
。
标签在哪里?
SOLUTION:
--decorate删除该标签?
SOLUTION:
git tag -d v-1向以前的 commit 添加标签
运行
git tag -a v1.0
将为最近的 commit 添加标签。但是如果你想向仓库中很久之前的 Commit 添加标签呢?
只需提供要添加标签的 commit 的 SHA 即可!
$ git tag -a v1.0 a87984
(在弹出代码编辑器以便让你提供标签消息之后)此命令将向 SHA 为
a87084
的 commit 添加标签
v1.0
。借助这一技巧,你可以为整个 git 仓库中的任何 commit 添加标签!很强大吧?并且只需在你已经知道的 git 标签命令中加上 commit 的 SHA 即可。
对以前的 commit 添加标签?
QUESTION:
根据以下
git log --oneline
信息,要向提交说明为 "style page header" 的 commit 添加标签
beta
,你会运行哪个命令?
2a9e9f3 add breakpoint for large-sized screens
137a0bd add breakpoint for medium-sized screens
c5ee895 add space around page edge
b552fa5 style page header
f8c87c7 convert social links from text to images
SOLUTION:
NOTE: The solutions are expressed in RegEx pattern. Udacity uses these patterns to check the given answer
git tag 小结
总结下,
git tag
命令用来标记特定的 commit 。当添加新的 commit 时,标签不会移动。
$ git tag -a beta
此命令将:
-
向最近的 commit 添加标签
-
如果提供了 SHA,则向具体的 commit 添加标签
深入研究
-
git tag - 英 git 文档